﻿/*
SINACOR - BMF&Bovespa
Arquivo: ConsultaAssessor.cs
Criado em: 31-mai-2010 09:44:15
Arquiteto Responsável: p-wgeneroso
*/
using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.Service.Common;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Validation.BusinessRules;

namespace Sinacor.Servico.Bovespa.Movimento.BusinessLogic 
{
	public class ConsultaAssessor : BaseBusinessLogic
	{
        #region Construtores

        public ConsultaAssessor()
        {
        }

        #endregion

		#region Métodos

		/// <summary>
		/// Consulta uma lista de agentes de um assessor
		/// </summary>
		/// <param name="entity"></param>
		public List<BusinessEntity.Agente> ConsultarAgentes(BusinessEntity.Parameter.FiltroAgente entity)
		{
            ResourceAccess.ConsultaAssessor raConsultaAssessor = null;
            BusinessRulesValidator validador = new BusinessRulesValidator();
            BusinessRuleValidation.ParametroInformado<BusinessEntity.Parameter.FiltroAgente> valParametroInformado = new BusinessRuleValidation.ParametroInformado<BusinessEntity.Parameter.FiltroAgente>();
            BusinessRuleValidation.FiltroAgenteValido valFiltroAgenteValido = new BusinessRuleValidation.FiltroAgenteValido();

            valParametroInformado.Parametro = entity;
            valFiltroAgenteValido.EntityToValidate = entity;

            validador.AddValidation("ParametroInformado", valParametroInformado);
            
            validador.Validate();
            validador.ClearAllErrors();
            validador.RemoveAllValidations();

            validador.AddValidation("FiltroAgenteValido", valFiltroAgenteValido);
            validador.Validate();

            raConsultaAssessor = new ResourceAccess.ConsultaAssessor();
            return raConsultaAssessor.ConsultarAgentes(entity);
		}

		/// <summary>
		/// Consulta uma lista de assessores relacionados ao usuário logado
		/// </summary>
		public List<BusinessEntity.Assessor> ConsultarAssessores()
		{
            ResourceAccess.ConsultaAssessor raConsultaAssessor = new ResourceAccess.ConsultaAssessor();
            return raConsultaAssessor.ConsultarAssessores();
		}

		/// <summary>
		/// Consulta uma lista de correspondentes
		/// </summary>
		public List<BusinessEntity.Correspondente> ConsultarCorrespondentes()
		{
            ResourceAccess.ConsultaAssessor raConsultaAssessor = new ResourceAccess.ConsultaAssessor();
            return raConsultaAssessor.ConsultarCorrespondentes();
		}

		/// <summary>
		/// Consulta dados de movimento por assessor conforme filtro.
		/// </summary>
		/// <param name="entity"></param>
		public List<BusinessEntity.ConsultaAssessor> ConsultarMovimentoAssessores(BusinessEntity.Parameter.FiltroConsultaAssessor entity)
		{
            ResourceAccess.ConsultaAssessor raConsultaAssessor = null;
            BusinessRulesValidator validador = new BusinessRulesValidator();
            BusinessRuleValidation.ParametroInformado<BusinessEntity.Parameter.FiltroConsultaAssessor> valParametroInformado = new BusinessRuleValidation.ParametroInformado<BusinessEntity.Parameter.FiltroConsultaAssessor>();
            BusinessRuleValidation.FiltroConsultaAssessorValido valFiltroConsultaAssessorValido = new BusinessRuleValidation.FiltroConsultaAssessorValido();

            valParametroInformado.Parametro = entity;
            valFiltroConsultaAssessorValido.EntityToValidate = entity;

            validador.AddValidation("ParametroInformado", valParametroInformado);

            validador.Validate();
            validador.ClearAllErrors();
            validador.RemoveAllValidations();

            validador.AddValidation("FiltroConsultaAssessorValido", valFiltroConsultaAssessorValido);
            validador.Validate();

            raConsultaAssessor = new ResourceAccess.ConsultaAssessor();
            return raConsultaAssessor.ConsultarMovimentoAssessores(entity);
		}

		#endregion
	}
}